home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Development Foundation 1.1 for IRIX 6.4
/
SGI IRIX 6.4 Development Foundation 1.1.iso
/
dist
/
dist6.4
/
patchSG0002420.idb
/
usr
/
relnotes
/
patchSG0002420
/
ch1.z
/
ch1
Wrap
Text File
|
1997-12-03
|
10KB
|
331 lines
- 1 -
1. _P_a_t_c_h__S_G_0_0_0_2_4_2_0__R_e_l_e_a_s_e__N_o_t_e
This release note describes patch SG0002420 to IRIX 6.2, 6.3
and 6.4.
Patch SG0002420 addresses flaws in earlier releases of POSIX
threads (pthreads) IEEE 1003.1c-1995 Standard.
This patch SHOULD NOT be installed unless the POSIX Patch
Set and the rld patch 1932 OR LATER is also installed.
1.1 _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
All platforms running IRIX 6.2, 6.2pacecar, 6.3-O2-10K and
6.4.
1.2 _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
Patch SG0002420 may be installed on IRIX 6.2, 6.3 and 6.4
systems configured with the POSIX Patch Set and rld patch
number 1932 OR LATER. This patch replaces patches 1361,
1405, 1644, 1941, 2040, 2041 2161, 2162, 2254.
1.3 _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_2_4_2_0
This patch contains fixes for the following bugs in IRIX
6.2, 6.2pacecar, 6.3-O2-10K and 6.4. Bug numbers from
Silicon Graphics bug tracking system are included for
reference.
+o Bug 533294: Avoid symbol preemption of calloc()
+o Bug 526820: fork() child identity cleanup
+o Bug 525427: cancellation/signals deadlock
+o Bug 523500: fork()/wait() synchronisation
+o Bug 481944: sigsuspend() race
+o Patches fixed in 2254:
Bug 498816: exceptions do not generate core dumps
Bug 498470: vp starvation under stress
Bug 491107: no more than 1024 pthreads allowed
+o Additional (roll-up bug numbers): 485218, 482660,
482530, 479337, 471918, 468984, 460998, 459551, 445235,
439648, 439638, 436647, 412725, 360218, 327458.
- 2 -
1.4 _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_2_4_2_0
This patch release includes these subsystems:
+o patchSG0002420.eoe_hdr.lib - pthreads header file
(pthread.h).
+o patchSG0002420.eoe_sw.irix_lib - pthreads libraries
(o32 and n32 versions).
+o patchSG0002420.eoe_sw64.lib - pthreads library (n64
version).
+o patchSG0002420.eoe_man.unix - pthreads-related man
pages.
1.5 _G_e_n_e_r_a_l__N_o_t_e_s
+o Pthread concurrency: by default the pthreads run-time
adjusts the number of kernel execution contexts
dynamically according to application behaviour. To
provide more control over this scheduling two new
interfaces are provided:
- int pthread_setconcurrency(int degree) requests
that the system set the number of execution
entities to degree; this is only a hint. A degree
of value 0 returns scheduling to the default mode.
- int pthread_getconcurrency(void) returns the
current hint or zero if the default mode is in
action.
+o Pthread limits: the default limit on the number of
pthreads is 1024. This limit may be raised using a new
rlimit resource RLIMIT_PTHREAD. The getrlimit(2) and
setrlimit(2) interfaces may be used to query and change
the limit. The current soft limit is 1024 and the hard
limit 10240. At this time the API is a library
construct; shells, systune and inheritance properties
are not supported.
In future releases the (default) hard limit will be
lowered but will be tunable with systune. Shells and
inheritance will also be fixed.
+o Core dumps: as a debugging aid, setting the environment
variable "PT_CORE" will cause the library to act on
exceptions encountered in the library code. The
purpose is solely to permit generation of a core dump
and no other behaviour should be attempted.
- 3 -
+o Run-time loader dependency: if this patch is installed
without the correct rld patch then pthread applications
will fail at load time with the following message:
rld: Fatal Error: _rld_new_interface: bad operation: 12
+o Pthread library load address: problems have been
observed regarding the address chosen to load the
pthread library. This can manifest itself as a memory
allocation failure for large allocations (typically
greater than 800Mb). A workaround for this problem is
to modify the so_locations files prior to installing
the patch as follows:
- locate the SGI DSO range, for example:
$range 0x02000000, 0x08000000:\
- find the libpthread entry:
libpthread.so \
:st = .text ...
:st = .data ...
- replace the .text and .data lines with the range:
libpthread.so \
$range 0x02000000, 0x08000000:\
- install the patch as usual
The address used to load the library can be found using
elfdump with the -L argument to retrieve the BASEADDR
value.
+o 6.2 Supplementary documentation: A postscript file
containing an updated version of chapter 3 of _T_o_p_i_c_s _i_n
_I_R_I_X _P_r_o_g_r_a_m_m_i_n_g describes the POSIX threads model in
more detail. It can be found in
/usr/relnotes/patchSG0002420/ch3.parallel.ps.
+o Debugging: WorkShop 2.6.2 and dbx 7.0 are pthread-
aware.
+o Performance tools: SpeedShop patch number 1809 OR
HIGHER is recommended for pthreads.
+o Sprocs: Sprocs use a fundamentally different
programming model and as such do not interact well with
pthreads. Rather than have ill-defined semantics, a
pthreads program does not support the sproc(),
sprocsp() calls or the arena synchronisation primitives
usconfig(3P).
- 4 -
+o Dynamic loading: loading the libpthread DSO or loading
a DSO depending on libpthread into to application which
is not linked with the pthread library is unstable.
Symbols that libpthread preempts are not (by default)
re-evaluated following the dynamic load and may
therefore be incorrect.
1.6 _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
Patch software is installed like any other Silicon Graphics
software product. Follow the instructions in your _S_o_f_t_w_a_r_e
_I_n_s_t_a_l_l_a_t_i_o_n _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e to bring up the miniroot
form of the software installation tools.
Note that by default, patch software is not installed and
must be explicitly selected.
Follow these steps to select a patch for installation:
1. At the Inst> prompt, type
iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
2. Initiate the installation sequence. Type
IIIInnnnsssstttt>>>> ggggoooo
3. You may find that two patches have been marked as
incompatible. (The installation tools reject an
installation request if an incompatibility is
detected.) If this occurs, you must deselect one of
the patches.
IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
4. After completing the installation process, exit the
_i_n_s_t program by typing
IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
- 5 -
1.7 _P_a_t_c_h__R_e_m_o_v_a_l__I_n_s_t_r_u_c_t_i_o_n_s
To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
would for any other software subsystem. The removal process
reinstates the original version of software unless you have
specifically removed the patch history from your system.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
To keep a patch but increase your disk space, use the
_v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.